#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by master on 2017/3/4

class Role(object):
    ac = None  # 类自己的属性(类变量 和实例无关)

    # 类属性的作用，例如可以统计类实例化出来的对象的个数
    # 在类中定义属性 count = 0 初始化方法中让count自增1 就可统计一共初始化了多少个实例对象
    def __init__(self, name, role, weapon, life_value):  # 构造方法
        # (实例的属性，只有实例会有 类本身不会有)
        self.name = name  # 定义成员和初始化成员
        self.role = role
        self.weapon = role
        self.life_value = life_value

    def buy_weapon(self, weapon):  # 成员函数
        self.weapon = weapon
        print("%s is buying [%s]" % (self.name, weapon))


# 实例化 把抽象的类变成具体的对象
Role.weapon = "XD"  # 给Role这个类添加了一个weapon属性 他和实例的weapon属性是分开的 不会影响实例的属性
p1 = Role("sanjiang", "Police", "B10", 90)
t1 = Role("chunyun", "Terrorist", "B11", 100)
t2 = Role("T2", "Terrorist", "B12", 100)
t3 = Role("T3", "Terrorist", "B13", 100)
p1.ac = "China Band"  # 相当于给p1这个实例添加了一个ac属性，它不会影响到类的ac属性
p1.buy_weapon("AK47")
t1.buy_weapon("B51")

print("P1:", p1.weapon)  # 实际上是访问了类的成员函数  类的成员函数和实例没有关系
print("t1:", t1.weapon)
# 因为t2和t3这两个实例没有ac属性，但是生成这两个实例的类有ac属性，所以t2和t3就访问了类的ac属性
print("t2:", t2.weapon, t2.ac)
print("t3:", t3.weapon, t3.ac)
